<template>
  <UploadExcel :onSuccess="success"></UploadExcel>
</template>

<script>
// 导入API
import { importEmployee } from "@/api/employees";

export default {
  data() {
    return {};
  },
  created() {},
  mounted() {},
  methods: {
    //   导入成功的回调
    async success(excelData) {
      // 这里header中的数据是中文的，不能直接传给后端，要进一步处理
      const { header, results } = excelData;
      //   和新增员工数据的属性一致
      /* {
          username: "",  //姓名
          mobile: "", //手机号
          formOfEmployment: "",//聘用形式
          workNumber: "",//工号
          departmentName: "",//部门代码
          timeOfEntry: "", //入职时间
          correctionTime: "", //转正时间
        }*/
      // 对应关系
      const userRelations = {
        入职日期: "timeOfEntry",
        手机号: "mobile",
        姓名: "username",
        转正日期: "correctionTime",
        工号: "workNumber",
      };
      let userList = [];
      // 转换key，拿到英文key的数组
      results.forEach((item) => {
        let userObj = {};
        for (const key in item) {
          if (Object.hasOwnProperty.call(item, key)) {
            if (key == "入职日期" || key == "转正日期") {
              // 转换日期格式,后端接收的是时间类型数据不是字符串
              userObj[userRelations[key]] = new Date(
                this.formatDate(item[key], "/")
              );
            } else {
              //   userRelations[key] 拿到对应的英文属性名
              userObj[userRelations[key]] = item[key];
            }
          }
        }
        userList.push(userObj);
      });
      // 发送请求 ,导入员工的数据
      await importEmployee(userList);
      //   提示
      this.$message.success("导入员工数据成功");
      //  跳回上一个页面
      this.$router.back();
    },
    // 对excel表格日期格式的处理
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1);
      time.setYear(time.getFullYear() - 70);
      const year = time.getFullYear() + "";
      const month = time.getMonth() + 1 + "";
      const date = time.getDate() - 1 + "";
      if (format && format.length === 1) {
        return year + format + month + format + date;
      }
      return (
        year +
        (month < 10 ? "0" + month : month) +
        (date < 10 ? "0" + date : date)
      );
    },
  },
};
</script>

<style lang="less" scoped>
</style>